home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / crc113.zip / FILE.C < prev    next >
Text File  |  1990-01-02  |  2KB  |  85 lines

  1. #include <stdio.h>
  2. #include <dir.h>
  3. #include <dos.h>
  4. #include "file.h"
  5.  
  6. int file_open(char *pn)
  7. {
  8.   union REGS inregs, outregs;
  9.   struct SREGS segregs;
  10.  
  11.   inregs.h.ah = 0x3d;           /* open a file */
  12.   inregs.h.al = READ_ONLY;
  13.   segregs.ds = FP_SEG(pn);
  14.   inregs.x.dx = FP_OFF(pn);
  15.  
  16.   return intdosx(&inregs, &outregs, &segregs);
  17. }
  18.  
  19. int file_close(int fd)
  20. {
  21.   union REGS inregs, outregs;
  22.  
  23.   inregs.h.ah = 0x3e;           /* close a file handle */
  24.   inregs.x.bx = fd;
  25.  
  26.   return intdos(&inregs, &outregs);
  27. }
  28.  
  29. int rdbin(int fd, char *buf, int count)
  30. {
  31.   union REGS inregs, outregs;
  32.   struct SREGS segregs;
  33.   int bytes_read;
  34.  
  35.   inregs.h.ah = 0x3f;         /* read from file or device, using handle */
  36.   inregs.x.bx = fd;
  37.   inregs.x.cx = count;
  38.   segregs.ds = FP_SEG(buf);
  39.   inregs.x.dx = FP_OFF(buf);
  40.  
  41.   bytes_read = intdosx(&inregs, &outregs, &segregs);
  42.   if (outregs.x.cflag)
  43.     bytes_read = 0;
  44.  
  45.   return bytes_read;
  46. }
  47.  
  48. int get_curr_dir(int drive, char *dir)
  49. {
  50.   union REGS inregs, outregs;
  51.   struct SREGS segregs;
  52.  
  53.   inregs.h.ah = 0x47;
  54.   inregs.h.dl = drive;
  55.   inregs.x.si = FP_OFF(dir);
  56.   segregs.ds = FP_SEG(dir);
  57.  
  58.   return intdosx(&inregs, &outregs, &segregs);
  59. }
  60.  
  61. void get_path(char *s)
  62. {
  63.   int i, stop, drive;
  64.   char dir[MAXDIR];
  65.  
  66.   i = strlen(s);
  67.   do {
  68.     stop = s[--i] == ':' || s[i] == '\\';
  69.     if (!stop)
  70.       s[i] = '\0';
  71.   } while (i > 0 && !stop);
  72.   if (strchr(s, ':') == NULL) {
  73.     strins(s, " :", 0);
  74.     s[0] = getdisk() + 'A';
  75.   }
  76.   if (s[2] != '\\') {
  77.     drive = s[0] - 'A' + 1;
  78.     get_curr_dir(drive, dir);
  79.     if (dir[0] != 0)
  80.       strcat(dir, "\\");
  81.     strins(s, dir, 2);
  82.     strins(s, "\\", 2);
  83.   }
  84. }
  85.